package com.tutos.ui.monitor;

import java.util.ArrayList;

import javax.inject.Inject;

import com.tutos.ui.MenuBase;
import com.tutos.ui.TutosApplication;
import com.vaadin.terminal.ThemeResource;
import com.vaadin.ui.Button;
import com.vaadin.ui.Button.ClickEvent;
import com.vaadin.ui.Button.ClickListener;
import com.vaadin.ui.Component;
import com.vaadin.ui.Label;
import com.vaadin.ui.VerticalLayout;


public class MenuMonitor implements MenuBase, ClickListener {
	
	private static final long serialVersionUID = 1L;
	
	private VerticalLayout layout = new VerticalLayout();
	private ArrayList<MenuListener> list = new ArrayList<MenuBase.MenuListener>();
	
	private Tutorial tutorial;
	private EditMonitor editMonitor;
	private HorarioGrafico horarioGrafico;
	private MonitorMessages monitorMessages;
	private MonitorData monitorData;
	private Calificacion calificacion;

	private Button logo;
	private Button horarios;
	private Button tutoria;
	private Button mensajes;
	private Button editar;
	private Button salir;

	
	@Inject
	public MenuMonitor(Tutorial tutorial, EditMonitor editMonitor, HorarioGrafico horarioGrafico, MonitorMessages monitorMessages, Calificacion calificacion) {
		this.tutorial = tutorial;
		this.editMonitor = editMonitor;
		this.horarioGrafico = horarioGrafico;
		this.monitorMessages = monitorMessages;
		this.calificacion = calificacion;
		initComponents();
	}
	
	private void initComponents(){

		
		logo = new Button();
		logo.setIcon(new ThemeResource("logo_menu.gif"));
		logo.setWidth("100%");
		
		
		
		
		
		horarios = new Button();
		horarios.setIcon(new ThemeResource("ihorario.gif"));
		horarios.setWidth("100%");
		horarios.setDescription("Tu horario");
		horarios.addListener(this);
		
		tutoria = new Button();
		tutoria.setIcon(new ThemeResource("itutoria.gif"));
		tutoria.setWidth("100%");
		tutoria.setDescription("Tus Tutorias");
		tutoria.addListener(this);
		
		mensajes = new Button();
		mensajes.setIcon(new ThemeResource("imensajes.gif"));
		mensajes.setWidth("100%");
		mensajes.setDescription("Tus Mensajes");
		mensajes.addListener(this);
		
		editar = new Button();
		editar.setIcon(new ThemeResource("ieditar.gif"));
		editar.setWidth("100%");
		editar.setDescription("Editar tu informacion");
		editar.addListener(this);
		
		salir = new Button();
		salir.setIcon(new ThemeResource("isalir.gif"));
		salir.setDescription("Salir de Tutos");
		salir.setWidth("100%");
		salir.addListener(this);
		
		layout.addComponent(logo);
		layout.addComponent(horarios);
		layout.addComponent(tutoria);
		layout.addComponent(mensajes);
		layout.addComponent(editar);
		layout.addComponent(salir);

	}
	
	@Override
	public void addListener(MenuListener listener) {
		if(listener == null)
			return;
		
		list.add(listener);		
	}
	
	private void fireEvent(Component component){
		for(MenuListener listener:list){
			listener.menuClick(component);
		}
	}

	@Override
	public Component getComponent() {
		return layout;
	}

	@Override
	public void buttonClick(ClickEvent event) {
	
		Button clicked = event.getButton();


		
		if(clicked == tutoria){
			tutorial.init();
			fireEvent(tutorial.getComponent());

		}else if(clicked == salir){
			TutosApplication.getInstance().close();
		}else if(clicked == mensajes){			
			fireEvent(monitorMessages);
		}else if(clicked == horarios){
			horarioGrafico.init();
			/*
			calificacion.init();
			VerticalLayout prueba = new VerticalLayout();
			prueba.addComponent(horarioGrafico.getComponent());
			prueba.addComponent(calificacion.getComponent());
			*/
			fireEvent(horarioGrafico.getComponent());
		}else if(clicked == editar){
			fireEvent(editMonitor.getComponent());
			
		}
			
	}

}
